/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.edu.fatec.ads.bo;

import br.edu.fatec.ads.classes.Categoria;
import br.edu.fatec.ads.dao.HibernateGenericDAO;
import br.edu.fatec.ads.util.ComboBoxItem;
import br.edu.fatec.ads.util.CriteriosUtil;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Criterion;

/**
 *
 * @author Ubirajara
 */
public class BusinessObjectCategoria implements IBusinessObject{

    private HibernateGenericDAO dao = null;

    public BusinessObjectCategoria() {
        dao = new HibernateGenericDAO(Categoria.class);
    }

    public void beginTransaction() {
        dao.beginTransaction();
    }

    public void commitTransaction() {
        dao.commitTransaction();
    }

    public void rollbackTransaction() {
        dao.rollbackTransaction();
    }

    public void clearSession() {
        dao.clearSession();
    }

    public List<Categoria> recuperarTodasCategorias()
        throws HibernateException{

        return dao.findByCriterion(null);
    }

    public List<Categoria> recuperarCategorias(List<ComboBoxItem> categorias){
        List<Categoria> categoriasRecuperadas = Collections.EMPTY_LIST;
        List<Integer> codigos = new ArrayList<Integer>();

        Map<String, Object> criteriosBusca = new HashMap<String, Object>();
        Map<String, Object> campoValores = new HashMap<String, Object>();

        if(categorias != null && !categorias.isEmpty()){
            for (ComboBoxItem categoria : categorias) {
                codigos.add(categoria.getCodigo());
            }

            campoValores.put("codigo", codigos);
            criteriosBusca.put(CriteriosUtil.CRITERIOS_IN, campoValores);

            List<Criterion> criteriosConvertidos = CriteriosUtil.getInstance().montaCriterios(criteriosBusca);

            categoriasRecuperadas = dao.findByCriterion(criteriosConvertidos);
        }

        return categoriasRecuperadas;
    }

}
